// 导入axios模块
import axios from 'axios'
// 获取登录信息
import { getToken } from '@/utils/store'
// 导入loading
import { Loading } from 'element-ui'

import JSONbig from 'json-bigint'
//  创建自定义的axios实例
const myRequest = axios.create({
  // 请求后台地址的域名/IP
  baseURL: 'http://api-toutiao-web.itheima.net',
  // 接口请求成功之后=》处理后台返回的数据，data=》是后台返回的对象字符串
  ransformResponse: [function (data) {
    // 使用json-bigint格式化后台返回的数据=》解决大数失真问题
    try {
      return JSONbig.parse(data)
    } catch (error) {
      console.log(error)
      return data
    }
  }]
})
// 定义loading实例
let loadingInstance

// 添加拦截器
// 请求拦截器
myRequest.interceptors.request.use(function (config) {
  // Do something before request is sent
  // 请求开始，显示loading
  loadingInstance = Loading.service({ text: '努力加载中...', background: 'rgba(0,0,0,.6)' })
  // 统一添加headers部分的token,需要排除登录、注册
  if (!config.url.includes('/authorizations')) {
    config.headers.Authorization = `Bearer ${getToken().token}`
  }
  return config
}, function (error) {
  // Do something with request error
  return Promise.reject(error)
})

// 响应拦截器
myRequest.interceptors.response.use(function (response) {
  // 关闭loading
  // loadingInstance.close()
  // 延时器
  setTimeout(() => loadingInstance.close(), 600)
  return response
}, function (error) {
  // 关闭loading
  loadingInstance.close()
  return Promise.reject(error)
})

// 导出实例
export default myRequest
